Cohesive Programming for Distributed Systems

نویسندگان

  • John A. Thywissen
  • Arthur Peters
چکیده

Our work seeks to greatly simplify the programming model of cohesive distributed systems. Here, a cohesive distributed activity is one that is conceptually an individual operation, yet executes across multiple physical devices. We believe that the communications structure of a distributed program should be separable from the software engineering modularization of the program. Current distributed programming technologies do not allow these concerns to be decoupled. We propose developing a distributed programming model that allows a single program text to be executed across distributed hardware. Module boundaries within the program text need not align with hardware communication boundaries, thus allowing separation of distribution concerns from modularity concerns. 1. Distributed Systems are Often Cohesive Consider the distributed systems aspects of the following robotics system: Multiple robots patrol an area, as a fire watch. The system as a whole must perform many activities including allocating robots to areas, performing navigation, and of course actually reporting fires. These tasks are distributed in a variety of ways, some on board the robot, some to a central controller. Crucially, though, there are some tasks that are performed partly on the central controller and partly on the robots. Circumventing obstacles is one such task: Sometimes the obstacles are other robots, so the central controller, in cooperation with the involved robots, can negotiate a resolution to the conflicting robot paths. However, each of these distributed controller–robot tasks must behave cohesively, as if it was a single program. For example, the obstacle resolution task requires the fusion of the sensor data indicating an obstacle with the reported positions of the other robots. This sub-task could be decomposed into separate programs which communicate, but it would be superior from a software engineering viewpoint to maintain it as a single program, with various parts of this unified program running on the robots and the central controller. This example is by no means unique. In many distributed systems, activity that is conceptually an individual operation executes across multiple physical devices. This is true at all scales of complexity, from multi-robot systems to mobile content streaming. Even an operation as unremarkable as user input validation on a Web form is often implemented as a mix of code running in the Web browser and the Web server. Admittedly, many distributed problems naturally decompose into separate communicating modules. However, this module-per-device decomposition is not always the most suitable one. 2. Current Methods Shatter Cohesion Despite the ubiquity of distributed applications, current distributed programming models can be tedious and precarious to use. Programmers are required to express distributed operations as isolated modules, each executing on a single device, and then explicitly and painstakingly specify each interaction. Quickly, these communications details overwhelm the codebase, obscuring the development of the useful application logic. RPC systems such as XML-RPC and Java RMI do not solve this problem. They still force separation between the client and the server and require large amounts of communication code. Take Java RMI [7], for example: To develop an application that executes on two machines, a developer would create two separate programs—a client program and a server program—which share a Java interface. For the simplest case (a single method call), this adds about 25–50 lines of code overhead. More harmfully, this fractures the application logic into these separate programs. This architecture for RPC is quite common: DCE/RPC, CORBA, ONC RPC, MSRPC, Distributed Ruby, and many other systems impose this client-server split. Erlang [1] provides a less constrained model of communication. Erlang processes can send messages to arbitrary other processes, and processes can be distributed among nodes. This allows interactions beyond strict client-server style; however, Erlang still structures its code into separate modules among which messages are passed. This results in the same fragmented programming style that RPC often creates. To be fair, using module boundaries as communications interfaces is a semantically straightforward approach. Interactions across modules are, by design, well-defined and con-

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Message-Oriented Middleware

As software systems continue to be distributed deployments over ever-increasing scales, transcending geographical, organizational, and traditional commercial boundaries, the demands placed upon their communication infrastructures will increase exponentially. Modern systems operate in complex environments with multiple programming languages, hardware platforms, operating systems and the requirem...

متن کامل

ACTIVE EARTH PRESSURE IN COHESIVE-FRICTIONAL SOILS USING FEM AND OPTIMIZATION

Calculation of lateral earth pressure on retaining walls is one of the main issues in geotechnics. The upper and lower bound theorems of plasticity are used to analyze the stability of geotechnical structures include bearing capacity of foundations, lateral earth pressure on retaining walls and factor of safety of slopes. In this paper formulation of finite element limit analysis is introduced ...

متن کامل

A Conversation Analysis of Ellipsis and Substitution in Global Business English Textbooks

Despite the body of research on textbook evaluation from the discourse analysis perspective, cohesive devices have rarely been analyzed in English for Specific Purposes (ESP) textbooks. The acquisition and use of cohesive devices is inherent to naturalistic communication, including business interactions. Hence, L2 learners of business English should be exposed to these devices through cohesion-...

متن کامل

A Machine Learning Across Programming Paradigms

As the long-term importance of machine learning grows and as data processing becomes increasingly dependent on large-scale distributed systems, functional programming languages have become a popular alternative to the standard Python approach to machine learning and data sciences. Here, I implement a small machine learning library, consisting of a preprocessing transformer, a logistic regressio...

متن کامل

Developing paradigms of data fusion for sensor - actuator networks that perform engineering tasks

ata fusion is a paradigm for integrating data from multiple sources to synthesize new information such that the whole is greater than the sum of its parts. This is a critical task in contemporary and future systems that have distributed networks of lowcost, resource-constrained sensors [1], [2]. Current techniques for data fusion are based on general principles of distributed systems and rely o...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2013